A virtualized cluster is a cluster of different storage nodes that together expose a single storage device. Input/output (I/O) operations sent to the cluster are internally re-routed to read and write data to the appropriate locations. In this regard, a virtualized cluster of storage nodes can be considered analogous to collection of disks in a Redundant Array of Inexpensive Disks (RAID) configuration, since a virtualized cluster hides the internal details of the cluster's operation from initiators and presents a unified device instead.
A virtualized cluster can field I/Os from one or more initiators. In addition to servicing these initiator I/Os, the system internally processes internal operations including I/O operations. Such operations can be processed in the background to provide functionality such as data migration, adaptive network compression, boot data analysis, volume mirroring, defragmentation, or other internal maintenance operations. These background operations can compete with initiator I/O operations for resources such as disk access, CPU cycles, memory, network bandwidth, and so on. If the background operations are scheduled during a period of very high I/O activity from initiators, a drop in performance may be experienced as decreased throughput and increased latency of the storage system.
However, storage systems do not generally run at full load all the time. Instead, the load on a storage system can fluctuate with usage patterns of end users and the applications that store and access data in the storage system. More often than not, these patterns conform to human patterns, with the load on data systems often peaking during working hours, and having lulls during nights and weekends. Additionally, there may be patterns that recur on a weekly basis, such as a higher load every Friday, or on a monthly or yearly basis.
Predicting the amount of load that is expected on the system during various time periods in the future can provide for intelligent scheduling of background I/O operations. Improved allocation of background operations may reduce system overload and also may reduce the impact on production performance. For example, background I/O operations may be intelligently scheduled to coincide with periods of otherwise low system load.
It is with respect to these considerations and others that the disclosure made herein is presented.